Auto Fib Retracement [victhoreb]Auto Fib Retracement is an automated Fibonacci retracement tool for TradingView that dynamically identifies key swing points and plots Fibonacci levels to help traders visualize potential support and resistance areas. Using a Zigzag algorithm, the indicator detects recent pivot highs and lows and calculates retracement levels based on these significant price swings. Key features include:
- Dynamic Pivot Detection: Automatically identifies recent swing highs and lows using configurable lookback periods, ensuring the Fibonacci levels adjust as the market evolves.
- Customizable Fibonacci Levels: Users can tailor the Fibonacci retracement levels (0, 0.214, 0.382, 0.5, 0.618, 0.786,) along with individual colors, offering flexibility to match various trading strategies.
- Zigzag Visualization: Optionally displays a Zigzag line that connects the detected pivot points, providing a clear visual representation of the price swing dynamics.
- Adjustable Line Extension: Retracement lines can be extended for a specified number of bars.
- Repainting Option: Includes an option to repaint the Zigzag, ensuring that the most current price action is reflected in the indicator’s output.
- The Auto Fibonacci Retracement itself DOES NOT REPAINT : )
This indicator streamlines the analysis process by automatically drawing Fibonacci retracement levels, allowing traders to quickly identify potential reversal areas and make more informed trading decisions.
"swing high"に関するスクリプトを検索
Peak Reaction Zones [BigBeluga]Peak Reaction Zones is an advanced Smart Money Concept (SMC) indicator that identifies the most recent swing high and swing low zones, helping traders determine premium and discount areas for optimal trade positioning.
🔵 Key Features:
Swing High & Low Zones:
Automatically detects the latest swing high and swing low levels.
Helps traders identify key reaction points where price is likely to respond.
Premium & Discount Concept:
The high zone represents a premium area, where price is overextended and may reverse.
The low zone represents a discount area, where price is undervalued and may bounce.
The midline dynamically marks the equilibrium of the range.
Adjustable Zone Width:
Users can fine-tune the width of the zones to match their trading style.
Wider zones capture broader reaction ranges, while narrower zones focus on precise levels.
Zone Retest Signals:
Blue markers appear when price retests the lower reaction zone, signaling potential support.
Orange markers appear when price retests the upper reaction zone, indicating possible resistance.
Price Labels for Key Levels:
Displays the price value of the swing high, swing low, and midline for quick reference.
Helps traders recognize major reaction points at a glance.
🔵 Usage:
Smart Money Trading: Utilize the premium and discount concept to align trades with institutional order flow.
Zone Reactions: Watch for price tests of reaction zones and use the retest signals to confirm potential reversals.
Midline Confirmation: If price holds above or below the midline, it can indicate directional bias.
Scalping & Swing Trading: Short-term traders can look for zone rejections, while swing traders can use the levels for trend continuation setups.
Peak Reaction Zones is a must-have tool for traders looking to trade with Smart Money Concepts, allowing for precise entries and exits based on key liquidity areas and market structure.
Support and Resistance all in one The Support and Resistance Indicator (v4) is designed to identify and track key price levels in financial markets. Here's how it works:
Core Functionality
Level Detection
Uses pivot points to identify significant price levels
Looks for swing highs (resistance) and swing lows (support)
Requires price action to pivot over a specified period (default 10 bars)
Dynamic Level Management
Maintains separate arrays for support and resistance levels
Limits maximum displayed levels (default 10) to prevent chart clutter
Removes oldest levels when maximum is reached
Ensures new levels are sufficiently distant from existing ones (minimum 1% separation)
Touch Detection System
Monitors price interaction with established levels
Counts when price comes within 0.1% of any level
Updates touch count and strength classification
Categories: "New" (1 touch), "Moderate" (2 touches), "Strong" (3+ touches)
Visual Representation
Draws horizontal lines at each level
Updates line width based on strength (thicker for stronger levels)
Shows labels with price and strength information
Color coding: Red (new/moderate levels), Green (strong levels)
Displays triangles (▼▲) at pivot points
Trading Applications
Support/Resistance Trading
Strong levels (3+ touches) suggest reliable trading zones
More touches indicate higher probability reversal points
Use for stop loss and target placement
Breakout Trading
Monitor breaks of strong levels
Higher touch count suggests more significant breakouts
Watch for false breakouts at weaker levels
Risk Management
Place stops beyond strong levels
Use level strength to adjust position size
Consider multiple timeframe analysis
Best Practices
Use with other indicators for confirmation
Consider market context and trend
Monitor level strength development
Don't rely solely on touch count
Watch for price reaction at levels
Customization Options
Adjust pivot length for different timeframes
Modify minimum distance between levels
Change required touches for "Strong" classification
Toggle strength labels display
Choose line style (Solid/Dashed/Dotted)
This indicator helps identify key price levels where market participants have shown interest, making it valuable for trade planning and risk management
Fibonacci Retracement/ExtensionThis Pine Script code implements Fibonacci retracement and extension levels based on a ZigZag pattern. Below is a breakdown of its functionality:
Overview
The script calculates Fibonacci retracement and extension levels by identifying swing highs and swing lows using the ZigZag algorithm. It then plots these levels on the chart for trend analysis.
1. ZigZag Length Input
Defines the ZigZag length, which determines the sensitivity of peak and trough identification.
2. Fibonacci Retracement Calculation
Computes Fibonacci retracement levels using swing highs and lows.
Uses pre-defined Fibonacci ratios (0.236, 0.382, 0.5, 0.618, 0.786, 1.0).
Adjusts line positions dynamically as the trend evolves.
3. Fibonacci Extension Calculation
Identifies Fibonacci extension levels for future price targets.
Uses previous ZigZag patterns to estimate potential price movements.
4. Trend and Fibonacci Configuration
Allows the user to configure Fibonacci trend analysis.
TrendSw: Sets the trend direction (1 = Bullish, -1 = Bearish, 0 = None).
ZigZagleg: Determines the countback value for retracement calculations.
Auto Swing TPAutomatic TP generator from recent swing highs and swing lows
Multiple long & short TPs from current price are displayed.
Results will differ by timeframe.
The main parameter is the "cell size" which is the least significant price move for the current asset. The default value of 0.4% is optimized for crypto. You may want to use less for less volatile asset classes.
How it works
We divide price into cells of a certain percent sizes, mainly because this makes the computation a lot easier.
We note in which bar every price cell was last visited. We take the distance to the current bar and then the logarithm of that to a certain base (the "time dimension"). Using a logarithm gives a nice balance of near-term and long-term targets. We call that logarithmic value the "level" of that price cell.
If a price cell has a significantly higher or lower level (at least by +2 or -2) than the cell above or below, this is considered a possible TP area.
Finally we check if the trade makes sense (meaning is of a certain size, at least 10 cells by default). If yes, we reduce the TP by a bit (by default 2 cells) and add it to the chart.
Market StructureThis is an advanced, non-repainting Market Structure indicator that provides a robust framework for understanding market dynamics across any timeframe and instrument.
Key Features:
- Non-repainting market structure detection using swing highs/lows
- Clear identification of internal and general market structure levels
- Breakout threshold system for structure adjustments
- Integrated multi-timeframe compatibility
- Rich selection of 30+ moving average types, from basic to advanced adaptive variants
What Makes It Different:
Unlike most market structure indicators that repaint or modify past signals, this implementation uses a fixed-length lookback period to identify genuine swing points.
This means once a structure level or pivot is identified, it stays permanent - providing reliable signals for analysis and trading decisions.
The indicator combines two layers of market structure:
1. Internal Structure (lighter lines) - More sensitive to local price action
2. General Structure (darker lines) - Shows broader market context
Technical Details:
- Uses advanced pivot detection algorithm with customizable swing size
- Implements consecutive break counting for structure adjustments
- Supports both close and high/low price levels for breakout detection
- Includes offset option for better visual alignment
- Each structure break is validated against multiple conditions to prevent false signals
Offset on:
Offset off:
Moving Averages Library:
Includes comprehensive selection of moving averages, from traditional to advanced adaptive types:
- Basic: SMA, EMA, WMA, VWMA
- Advanced: KAMA, ALMA, VIDYA, FRAMA
- Specialized: Hull MA, Ehlers Filter Series
- Adaptive: JMA, RPMA, and many more
Perfect for:
- Price action analysis
- Trend direction confirmation
- Support/resistance identification
- Market structure trading strategies
- Multiple timeframe analysis
This open-source tool is designed to help traders better understand market dynamics and make more informed trading decisions. Feel free to use, modify, and enhance it for your trading needs.
Fibonacci Snap Tool [TradersPro]
OVERVIEW
The Fibonacci Snap tool automatically snaps to the swing high and swing low of the price data shown on the chart display. Fibonacci retracement levels can be used for entry, exit, or as a confirmation of trend continuation.
If the swing high on the chart comes before the swing low, the price is in a downtrend.If the swing high comes after the swing low, the price is in an uptrend.
We call the 23.60% Fibonacci level the momentum zone of the trend. Price in a solid trend, either up or down, will typically hold the 23.60% Fibonacci level as support (demand) in an uptrend or resistance (supply) in a downtrend.
Deeper Fibonacci levels of 38.20%, 50.00%, and 61.80% are corrective supply/demand zones. As price moves against the found trend, it can move into this range block we call the corrective zone.
Fibonacci retracement levels are used to identify potential supply/demand areas where price could reverse or consolidate. These levels are based on key ratios derived from the Fibonacci sequence, and we only use the core 23.60%, 38.20%, 50.00%, and 61.80% ratios.
CONCEPTS
Price action moves in trend cycles, these retracement levels help traders measure proportional relationships between the high/low swings in the price trend.
When a price trend is moving against the trend, traders can find opportunities to trade with the current trend at key Fibonacci levels. Fibonacci levels can be used to anticipate where price might find supply/demand imbalance and continue moving in the trend direction.
Traders apply the indicator by selecting a window of price they want to analyze in the chart display, and the Fibonacci Snap tool will snap to the high and low of the visible price display.
The Intent and Use of This Tool
The 23.60% level acts as a momentum or continuation of trend. The 38.20% to 61.80% range are corrective zones of the trend.
The 61.80% level, also known as the golden ratio (Google the term “Golden Ratio”; it's fun), can often represent the location of supply/demand imbalance.
In an uptrend, it can represent the area of no more selling supply, and the balance can shift to buying demand. In a downtrend, it can represent the area of no more buying demand and the balance can shift to selling supply.
When used with the Momentum Zones indicator, these two tools create a powerful combination for traders to find, implement, and manage trades.
Liquidity Channels [TFO]This indicator was built to visually demonstrate the significance of major, untouched pivots. With traders commonly placing orders at or near significant pivots, these areas are commonly referred to as Resting Liquidity. If we attribute some factor of growth over time, we can quickly visualize that certain pivots originated much further away than others, if their channels appear larger.
A pivot in this case is validated by the Liquidity Strength parameter. If set to 50 for example, then a pivot high is validated if its high is greater than the high of the 50 bars to the left and right of itself. This also implies a delay in finding pivots, as the drawings won't actually appear until validation, which would occur 50 bars after the original high has formed in this case. This is typical of indicators using swing highs and lows, as one must wait some period of time to validate the pivots in question.
The Channel Growth parameter dictates how much the Liquidity Channels will expand over time. The following chart is an example, where the left-hand side is using a Channel Growth of 1, and the right-hand side is using a Channel Growth of 10.
When price reaches these levels, they become invalidated and will stop extending to the right. The other condition for invalidation is the Delete After (Bars) parameter which, when enabled, declares that untouched levels will be deleted if the distance from their origin exceeds this many bars.
This indicator also offers an option to Hide Expanding Channels for those who just want the actual levels on their chart, without the extra visuals, which would look something like the below chart.
Volumetric Rejection Blocks [UAlgo]The Volumetric Rejection Blocks is designed to help traders identify and visualize key price levels where volumetric rejections occur, which may indicate a shift in market sentiment. These rejections can signal potential trend reversals or areas where price action is likely to face support or resistance. By drawing rejection blocks based on volumetric strength, the indicator allows users to observe where significant buying or selling pressure has been exerted, which can be used as a reference point for future price action.
Also indicator dynamically calculates swing highs and lows, analyzes bullish and bearish strengths based on volume-weighted price movements, and displays rejection blocks on the chart. Each rejection block represents an area where the price attempted to move beyond a certain level but faced rejection, either on a close or wick basis. This can be particularly useful for traders who rely on market structure and order flow to make informed decisions about entering or exiting trades.
🔶 Key Features
Swing Length Customization: Allows users to define the swing length, helping tailor the sensitivity of the swing high and low detection to the specific market conditions.
Rejection Block Visualization: Displays up to the last 10 rejection blocks based on user settings, clearly marking areas of significant bullish or bearish rejections.
Volumetric Strength Analysis: The indicator calculates bullish and bearish strength for each rejection block, based on volume-weighted price movements over the last few bars, giving insight into the intensity of the rejection.
Violation Check Type: Offers two options for violation detection—"Close" and "Wick". This allows traders to specify whether a price level is considered broken only if it closes beyond the level or if any wick breaches it.
Bullish and Bearish Block Coloring: Rejection blocks are colored to represent bullish (green) and bearish (red) rejection areas. The color transparency can be adjusted for clear visibility overlaid on the price chart.
Market Structure Labels: Labels and lines marking "Market Structure Shift" (MSS) and "Break of Structure" (BOS) are displayed, giving traders context about significant market structure changes.
🔶 Interpreting the Indicator
Rejection Blocks: These colored blocks on the chart indicate areas where the price faced significant buying or selling pressure. A green block suggests a bullish rejection (support zone), where buyers absorbed the sell-off, potentially pushing the price upward. Conversely, a red block indicates a bearish rejection (resistance zone), where sellers overpowered buyers, potentially driving the price lower.
Strength Analysis: The width of the green and red sections within a rejection block represents the relative bullish and bearish strengths. A wider green section indicates stronger bullish support, while a wider red section suggests more robust bearish resistance. This helps traders gauge the likelihood of price holding or breaching these levels.
Market Structure Shift (MSS) and Break of Structure (BOS): The indicator automatically detects and labels significant changes in market structure. An "MSS" label indicates the first break, suggesting a potential shift in trend direction. A "BOS" label indicates a subsequent confirmation in trend direction, allowing traders to recognize potential trend continuations.
Violation Check: Traders can choose how to interpret breaks of these rejection blocks. Using the "Close" option provides a more conservative approach, requiring a close beyond the level for confirmation. The "Wick" option is more aggressive, treating any wick beyond the level as a break.
🔶 Disclaimer
Use with Caution: This indicator is provided for educational and informational purposes only and should not be considered as financial advice. Users should exercise caution and perform their own analysis before making trading decisions based on the indicator's signals.
Not Financial Advice: The information provided by this indicator does not constitute financial advice, and the creator (UAlgo) shall not be held responsible for any trading losses incurred as a result of using this indicator.
Backtesting Recommended: Traders are encouraged to backtest the indicator thoroughly on historical data before using it in live trading to assess its performance and suitability for their trading strategies.
Risk Management: Trading involves inherent risks, and users should implement proper risk management strategies, including but not limited to stop-loss orders and position sizing, to mitigate potential losses.
No Guarantees: The accuracy and reliability of the indicator's signals cannot be guaranteed, as they are based on historical price data and past performance may not be indicative of future results.
Swing Percentile Lines [QuantVue]The Swing High/Low Percentile Indicator is designed to help traders identify key price levels based on the most recent swing high and low. By anchoring to the most recent swing high and swing low, the indicator automatically generates percentile lines ( 25%, 50%, 75%) that act as dynamic support and resistance levels.
What Does the Indicator Do?
The Swing High/Low Percentile Indicator works by identifying the most recent significant price swings, whether it's a swing high or swing low. It then calculates the range between these points and divides the distance into percentage-based levels. These levels are plotted on the chart as clear, easy-to-read lines at 25%, 50%, and 75% of the range between the swing high and low.
These percentile lines serve as dynamic price zones where traders can anticipate potential reactions, whether the market is trending or consolidating.
How Can Traders Use the Indicator?
Support and Resistance: The percentile lines act as evolving support and resistance zones. Traders can anticipate price bounces or breaks at these levels, providing opportunities for trend-following or reversal trades.
Trend Identification: The indicator helps traders determine the strength of a trend. In a strong uptrend, price will likely stay above the 50% or 75% lines, while in a downtrend, it may remain below the 50% or 25% lines. This gives traders an edge in recognizing the overall market direction.
Entry and Exit Points: Traders can use the percentile lines to time their entries and exits. For example, entering a trade on a pullback to the 25% or 50% line offers a favorable risk-to-reward ratio. Similarly, the percentile lines serve as natural profit targets, allowing traders to plan exits as the price approaches the 50% or 75% levels.
Risk Management: The clear delineation of price levels makes it easy for traders to set stop-loss orders. For example, if price falls below the 25% line in an uptrend, it may signal weakness, prompting an exit or reduced position size.
Breakout and Breakdown Scenarios: When price breaks above a recent swing high or below a swing low, the percentile lines provide traders with pullback entry opportunities or key levels to watch for continuation of the move.
Fibonacci & Bollinger Bands StrategyThis strategy combines Bollinger Bands and Fibonacci retracement/extension levels to identify potential entry and exit points in the market. Here’s a breakdown of each component and how the strategy works:
1. Bollinger Bands:
Bollinger Bands consist of a simple moving average (SMA) and two standard deviations (upper and lower bands) plotted above and below the SMA. The bands expand and contract based on market volatility.
Purpose in Strategy:
The lower band represents an area where the market might be oversold.
The upper band represents an area where the market might be overbought.
The price crossing these bands suggests overextended market conditions, which can be used to identify potential reversals.
2. Fibonacci Retracement and Extension Levels:
Fibonacci retracement levels are horizontal lines that indicate where price might find support or resistance as it retraces some of its previous movement. Common retracement levels are 61.8% and 78.6%.
Fibonacci extension levels are used to project areas where the price might extend after completing a retracement. These levels can help determine potential targets after a significant price movement.
Purpose in Strategy:
The strategy calculates the most recent swing high (fibHigh) and swing low (fibLow) over a lookback period. It then plots Fibonacci retracement and extension levels based on this range.
The Fibonacci levels are used as key support and resistance areas. The price approaching or touching these levels signals potential turning points in the market.
3. Entry Criteria:
A long position (buy) is triggered when:
The price crosses below the lower Bollinger Band, indicating an oversold condition.
The price is near or above a Fibonacci extension level (calculated based on the most recent price swing).
This suggests that the price is potentially reaching a strong support area, where a reversal is likely.
4. Exit Criteria:
The long position is closed (exit trade) when either:
The price touches or crosses the upper Bollinger Band, signaling an overbought condition.
The price reaches a Fibonacci retracement level or exceeds the recent swing high (fibHigh), indicating a potential exhaustion point or a reversal area.
5. General Strategy Logic:
The strategy takes advantage of market volatility (captured by the Bollinger Bands) and key support/resistance levels (determined by Fibonacci retracement and extension levels).
By combining these two techniques, the strategy identifies potential entry points at oversold levels with the expectation that the market will retrace or reverse upward, especially when near key Fibonacci extension levels.
Exit points are identified by potential overbought levels (Bollinger upper band) or key Fibonacci retracement levels, where the price might reverse downward.
6. Conditions to Execute the Strategy:
The Fibonacci levels are only calculated once the price has made a significant movement, establishing a recent high and low over a 50-bar period (which you can adjust). This ensures the Fibonacci levels are based on meaningful swings.
The entry and exit signals are filtered using both Bollinger Bands and Fibonacci levels to ensure that trades are not taken solely based on one indicator, thus reducing false signals.
Key Features of the Strategy:
Trend-following with reversal: It tries to catch reversals when the price hits extreme levels (Bollinger Bands) while respecting important Fibonacci levels.
Dynamic market adaptation: The strategy adapts to market conditions as it recalculates Fibonacci levels based on recent price swings and adjusts the Bollinger Bands for market volatility.
Confirmation through multiple indicators: It uses both the volatility-based signals from Bollinger Bands and the price structure from Fibonacci levels to confirm trade entries and exits.
Summary of the Strategy:
The strategy looks to buy low and sell high based on oversold/overbought signals from Bollinger Bands and Fibonacci levels that indicate key support and resistance zones.
By combining these two technical indicators, the strategy aims to reduce risk and increase accuracy by only entering trades when both indicators suggest favorable conditions.
Linear and Logarithmic Fibonacci Levels and (Price&Time) FansIntroduction
The Fibonacci Retracement tool is a go-to for traders looking to spot potential support and resistance levels. By measuring the distance between swing highs and lows, you can apply Fibonacci ratios like 0.236, 0.382, and 0.618 to predict key market levels.
Traditionally, these levels are set by dividing this distance into equal parts—known as Linear Levels. A more refined approach, Logarithmic Price and Time Levels, divides the distance into proportionally equal segments. Plus, this indicator now includes Fibonacci fans, adding another layer of analysis by projecting potential price levels using trendlines based on Fibonacci ratios.
This tool makes it easier to identify both Linear and Logarithmic levels while also leveraging Fibonacci fans for a more complete market view.
Applications
Logarithmic Levels and Fibonacci fans are ideal for volatile markets. In crypto, they’re especially effective for BTCUSDT (check out the wick from January 23, 2024). They also help spot accumulation and distribution patterns in high-volume altcoins like FETUSDT . In traditional markets, they’re useful for tracking stocks like TSLA and NVDA with extreme price swings, as well as indices in inflation-affected markets like XU100 , or recession-hit currency pairs like JPYUSD .
How to Use
This indicator is intuitive and similar to TradingView’s Fibonacci Tool. Select your reference levels (Level 1 and Level 0), then tweak the settings to customize your analysis, including adding Fibonacci fans for extra insights.
Why It’s Different
Unlike TradingView’s tool, which forces you to switch to a logarithmic scale (messing with other indicators and trend lines), this indicator lets you view both Linear and Logarithmic levels—and Fibonacci fans on Price and Time Series—without changing your chart’s scale. The original Fibonacci Code was derived from zekicanozkanli, modified and upgraded to plot fib front and back fans as well. Due to TV Max Plot restrictions I need to publish just Front and Back and Front Fibs separately.
Linear and Logarithmic Fibonacci Levels and FansIntroduction
The Fibonacci Retracement tool is a go-to for traders looking to spot potential support and resistance levels. By measuring the distance between swing highs and lows, you can apply Fibonacci ratios like 0.236, 0.382, and 0.618 to predict key market levels.
Traditionally, these levels are set by dividing this distance into equal parts—known as Linear Levels. A more refined approach, Logarithmic Levels, divides the distance into proportionally equal segments. Plus, this indicator now includes Fibonacci fans, adding another layer of analysis by projecting potential price levels using trendlines based on Fibonacci ratios.
This tool makes it easier to identify both Linear and Logarithmic levels while also leveraging Fibonacci fans for a more complete market view.
Applications
Logarithmic Levels and Fibonacci fans are ideal for volatile markets. In crypto, they’re especially effective for BTCUSDT (check out the wick from January 23, 2024). They also help spot accumulation and distribution patterns in high-volume altcoins like FETUSDT . In traditional markets, they’re useful for tracking stocks like TSLA and NVDA with extreme price swings, as well as indices in inflation-affected markets like XU100 , or recession-hit currency pairs like JPYUSD .
How to Use
This indicator is intuitive and similar to TradingView’s Fibonacci Tool. Select your reference levels (Level 1 and Level 0), then tweak the settings to customize your analysis, including adding Fibonacci fans for extra insights.
Why It’s Different
Unlike TradingView’s tool, which forces you to switch to a logarithmic scale (messing with other indicators and trend lines), this indicator lets you view both Linear and Logarithmic levels—and Fibonacci fans—without changing your chart’s scale. The original Fibonacci Code was derived from zekicanozkanli, modified and upgraded to plot fib fans as well.
PubLibSwingLibrary "PubLibSwing"
swing high and swing low conditions, prices, bar indices and range ratios for indicator and strategy development
sh()
swing high condition
Returns: bool
sl()
swing low condition
Returns: bool
shbi(occ)
swing high bar index, condition occurrence n
Parameters:
occ (simple int)
Returns: int
slbi(occ)
swing low bar index, condition occurrence n
Parameters:
occ (simple int)
Returns: int
shcp(occ)
swing high close price, condition occurrence n
Parameters:
occ (simple int)
Returns: float
slcp(occ)
swing low close price, condition occurrence n
Parameters:
occ (simple int)
Returns: float
shp(occ)
swing high price, condition occurrence n
Parameters:
occ (simple int)
Returns: float
slp(occ)
swing low price, condition occurrence n
Parameters:
occ (simple int)
Returns: float
shpbi(occ)
swing high price bar index, condition occurrence n
Parameters:
occ (simple int)
Returns: int
slpbi(occ)
swing low price bar index, condition occurrence n
Parameters:
occ (simple int)
Returns: int
shrr(occ)
swing high range ratio, condition occurrence n
Parameters:
occ (simple int)
Returns: float
slrr(occ)
swing low range ratio, condition occurrence n
Parameters:
occ (simple int)
Returns: float
Supports & Resistances [UAlgo]The "Supports & Resistances " indicator is designed to identify and visualize key support and resistance levels on the price chart. It utilizes the Average True Range (ATR) and Pivot Points to define the boundaries of S & R zones and considers historical price action to assess the strength of these zones.
🔶 How to Obtain Zones
The script continuously analyzes the price action and identifies potential support and resistance zones based on the following criteria:
Zone Creation: For swing highs, a zone is created with the high price at the zone length as the top and the top minus the Average True Range (ATR) as the bottom. Conversely, for swing lows, the zone is created with the low price at the zone length as the bottom and the low plus the ATR as the top.
Zone Strength Calculation: The script iterates through historical bars within the zone and counts how many times the price (low for support, high for resistance) touched but failed to break entirely through the zone. This count is assigned as the zone's "strength".
Zone Display and Removal: It identifying zones by assigning a "strength" value based on how many times the price has approached but failed to break the zone. This helps prioritize stronger potential support/resistance levels. Only zones exceeding the defined "strength threshold" are visually displayed on the chart. Weaker zones or those broken by price are automatically removed.
🔶 Parameters
Zone Length: Traders can adjust S & R detection sensitivity, length to be used to find pivot points.
Strength Threshold: Set the minimum number of times the price needs to touch but fail to break a zone for it to be considered "strong" and displayed.
Visual Settings: Tailor the appearance of the support/resistance zones by defining separate colors and text size for borders, backgrounds, and zone text.
🔶 Disclaimer
The "Supports & Resistances " indicator is provided for educational and informational purposes only.
It should not be considered as financial advice or a recommendation to buy or sell any financial instrument.
The use of this indicator involves inherent risks, and users should employ their own judgment and conduct their own research before making any trading decisions. Past performance is not indicative of future results.
🔷 Related Scripts
Support and Resistance with Signals
ATR Based Support and Resistance Zones
Fake BreakoutThis indicator detect fake breakout on previous day high/low and option previous swing high and low
Rule Detect Fake Breakout On Previous Day High/Low Or Swing high low Fake Breakout -
1) Detect previous day high/low or swing high/low
2)
A) If price revisit on previous day high/swing high look for upside breakout after input
number of candle (1-5) price came back to previous high and breakout happen downside
it show sell because its fake breakout of previous day high or swing high
B) If price revisit on previous day low/swing low look for downside breakout after input
number of candle (1-5) price came back to previous low and breakout upside of previous
day low it show Buy because its fake breakout of previous day low or swing low
Disclaimer -Traders can use this script as a starting point for further customization or as a reference for developing their own trading strategies. It's important to note that past performance is not indicative of future results, and thorough testing and validation are recommended before deploying any trading strategy.
Fibonacci Ranges (Real-Time) [LuxAlgo]The "Fibonacci Ranges" indicator combines Fibonacci ratio-derived ranges (channels), together with a Fibonacci pattern of the latest swing high/low.
🔶 USAGE
The indicator draws real-time ranges based on Fibonacci ratios as well as retracements. Breakouts from a Fibonacci Channel are also indicated by labels, indicating a potential reversal.
Each range extremity/area can also be used as support/resistance.
🔶 CONCEPTS
Fibonacci Channels
Latest Fibonacci
Both, Latest Fibonacci and Fibonacci Channels , display different Fibonacci levels (labels not included in the code):
However, the 2 react in a totally different way.
🔹 Fibonacci Channels
2 conditions must be fulfilled until a Fibonacci Channel is displayed:
New swing high/low
close has to be between chosen limits/levels ( Break level )
As visual guidance, chosen Break levels are accentuated by 2 small gray blocks:
Once the channel is displayed, it will remain visible until x consecutive bars break out of the chosen Break level at closing time.
• x consecutive bars is set by Break count .
The amount of breaks is counted in the code. When the price, without breaking the user-set limit, closes back between the 2 levels, the count is reset to 0.
By enabling Channels and Shadows you can see previous channels (" Shadows ", which is always delayed with 1 bar)
Previous channels can be helpful in finding potential support/resistance areas, especially from large channel blocks
The more narrow Break levels are set the less chance the price closes between these 2 levels, and the quicker close breaks out.
In other words, narrow levels give fewer & smaller channels, broader levels give more & larger channels.
Note:
• swing settings: L & R
• Break count (x consecutive bars that close outside chosen levels to invalidate the Fibonacci Channel )
will also be of influence in displaying the channels.
• Show breaks enable you to visualize signals when there is a break:
• Alerts can also be set ( Break Down / Break Up )
🔹 Latest Fibonacci
This displays the Fibonacci levels between the latest swing high and swing low, independently from the Fibonacci Channel .
The Lastest Fibonacci can be helpful in detecting the current trend against the larger Fibonacci Channel .
🔶 SETTINGS
🔹 Swing Settings
L: set left of pivothigh / pivotlow
R: set right of pivothigh / pivotlow
🔹 Fibonacci Channels
Channel : Channel / Channels + Shadows / None
Break level
-0.382 - 1.382
0.000 - 1.000
0.236 - 0.764
0.382 - 0.618
Break count
🔹 Fibonacci
Toggle
Colours: [ -0.382 - 0 ], [ 0.236 - 0.382 ], [ 0.5 ], [ 0.618 - 0.764 ], [ 1 - 1.382 ]
Bullish and Bearish Candlestick Patterns StrategyThe strategy is a combination of candlestick pattern analysis and Fibonacci retracement levels to identify potential buy and sell signals in the market. Here's how the strategy works and how you can trade accordingly:
Candlestick Pattern Analysis:
The strategy looks for specific bullish and bearish candlestick patterns to identify potential trend reversals or continuations. The bullish patterns include:
Bullish Engulfing: This pattern occurs when a bullish candle fully engulfs the previous bearish candle.
Hammer: It is a single candlestick pattern with a small body and a long lower wick, indicating a potential bullish reversal.
Morning Star: This pattern consists of three candles, with the middle one being a small-bodied candle that gaps down and the other two being bullish candles.
The bearish patterns include:
Bearish Engulfing: Similar to the bullish engulfing, but this time, a bearish candle fully engulfs the previous bullish candle.
Shooting Star: A single candlestick pattern with a small body and a long upper wick, suggesting a potential bearish reversal.
Evening Star: This pattern is the opposite of the morning star, with a small-bodied candle that gaps up between two bearish candles.
Fibonacci Retracement Levels:
The strategy uses Fibonacci retracement levels to determine potential support and resistance levels in the market. The main level considered in this strategy is the Fibonacci 0.5 level, which is the midpoint of the previous swing move.
Trading Accordingly:
To trade using this strategy, follow these steps:
a. Observe the Chart: Apply the indicator to your preferred chart, and observe the candlestick patterns and the plotted support, resistance, and Fibonacci 0.5 levels.
b. Buy Signal: A buy signal is generated when any of the bullish candlestick patterns (Bullish Engulfing, Hammer, Morning Star) occur, and the low price of the current candle is above or equal to the Fibonacci 0.5 level. This suggests a potential bullish reversal or continuation of an existing uptrend.
c. Sell Signal: A sell signal is generated when any of the bearish candlestick patterns (Bearish Engulfing, Shooting Star, Evening Star) occur, and the high price of the current candle is below or equal to the Fibonacci 0.5 level. This indicates a potential bearish reversal or continuation of an existing downtrend.
d. Risk Management: Place stop-loss orders to protect your position in case the market moves against your trade. Consider setting the stop-loss below the recent swing low for buy trades and above the recent swing high for sell trades.
e. Take Profit: Set a target for taking profits based on your risk-reward ratio. You can use the recent swing high for buy trades as a potential target and the recent swing low for sell trades.
f. Filter Signals: Keep in mind that not all signals will result in profitable trades. It's essential to filter signals with other technical analysis tools and consider the overall market context.
Remember that no trading strategy guarantees profits, and trading always carries inherent risks. It's crucial to practice proper risk management, use appropriate position sizing, and test the strategy thoroughly in a demo environment before applying it to live trading. Additionally, consider combining this strategy with other indicators or analysis methods to make more informed .
CNTLibraryLibrary "CNTLibrary"
Custom Functions To Help Code In Pinescript V5
Coded By Christian Nataliano
First Coded In 10/06/2023
Last Edited In 22/06/2023
Huge Shout Out To © ZenAndTheArtOfTrading and his ZenLibrary V5, Some Of The Custom Functions Were Heavily Inspired By Matt's Work & His Pine Script Mastery Course
Another Shout Out To The TradingView's Team Library ta V5
//====================================================================================================================================================
// Custom Indicator Functions
//====================================================================================================================================================
GetKAMA(KAMA_lenght, Fast_KAMA, Slow_KAMA)
Calculates An Adaptive Moving Average Based On Perry J Kaufman's Calculations
Parameters:
KAMA_lenght (int) : Is The KAMA Lenght
Fast_KAMA (int) : Is The KAMA's Fastes Moving Average
Slow_KAMA (int) : Is The KAMA's Slowest Moving Average
Returns: Float Of The KAMA's Current Calculations
GetMovingAverage(Source, Lenght, Type)
Get Custom Moving Averages Values
Parameters:
Source (float) : Of The Moving Average, Defval = close
Lenght (simple int) : Of The Moving Average, Defval = 50
Type (string) : Of The Moving Average, Defval = Exponential Moving Average
Returns: The Moving Average Calculation Based On Its Given Source, Lenght & Calculation Type (Please Call Function On Global Scope)
GetDecimals()
Calculates how many decimals are on the quote price of the current market © ZenAndTheArtOfTrading
Returns: The current decimal places on the market quote price
Truncate(number, decimalPlaces)
Truncates (cuts) excess decimal places © ZenAndTheArtOfTrading
Parameters:
number (float)
decimalPlaces (simple float)
Returns: The given number truncated to the given decimalPlaces
ToWhole(number)
Converts pips into whole numbers © ZenAndTheArtOfTrading
Parameters:
number (float)
Returns: The converted number
ToPips(number)
Converts whole numbers back into pips © ZenAndTheArtOfTrading
Parameters:
number (float)
Returns: The converted number
GetPctChange(value1, value2, lookback)
Gets the percentage change between 2 float values over a given lookback period © ZenAndTheArtOfTrading
Parameters:
value1 (float)
value2 (float)
lookback (int)
BarsAboveMA(lookback, ma)
Counts how many candles are above the MA © ZenAndTheArtOfTrading
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many recent bars are above the MA
BarsBelowMA(lookback, ma)
Counts how many candles are below the MA © ZenAndTheArtOfTrading
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many recent bars are below the EMA
BarsCrossedMA(lookback, ma)
Counts how many times the EMA was crossed recently © ZenAndTheArtOfTrading
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many times price recently crossed the EMA
GetPullbackBarCount(lookback, direction)
Counts how many green & red bars have printed recently (ie. pullback count) © ZenAndTheArtOfTrading
Parameters:
lookback (int)
direction (int)
Returns: The bar count of how many candles have retraced over the given lookback & direction
GetSwingHigh(Lookback, SwingType)
Check If Price Has Made A Recent Swing High
Parameters:
Lookback (int) : Is For The Swing High Lookback Period, Defval = 7
SwingType (int) : Is For The Swing High Type Of Identification, Defval = 1
Returns: A Bool - True If Price Has Made A Recent Swing High
GetSwingLow(Lookback, SwingType)
Check If Price Has Made A Recent Swing Low
Parameters:
Lookback (int) : Is For The Swing Low Lookback Period, Defval = 7
SwingType (int) : Is For The Swing Low Type Of Identification, Defval = 1
Returns: A Bool - True If Price Has Made A Recent Swing Low
//====================================================================================================================================================
// Custom Risk Management Functions
//====================================================================================================================================================
CalculateStopLossLevel(OrderType, Entry, StopLoss)
Calculate StopLoss Level
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, Defval = na
StopLoss (float) : Is The Custom StopLoss Distance, Defval = 2x ATR Below Close
Returns: Float - The StopLoss Level In Actual Price As A
CalculateStopLossDistance(OrderType, Entry, StopLoss)
Calculate StopLoss Distance In Pips
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, NEED TO INPUT PARAM
StopLoss (float) : Level Based On Previous Calculation, NEED TO INPUT PARAM
Returns: Float - The StopLoss Value In Pips
CalculateTakeProfitLevel(OrderType, Entry, StopLossDistance, RiskReward)
Calculate TakeProfit Level
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, Defval = na
StopLossDistance (float)
RiskReward (float)
Returns: Float - The TakeProfit Level In Actual Price
CalculateTakeProfitDistance(OrderType, Entry, TakeProfit)
Get TakeProfit Distance In Pips
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, NEED TO INPUT PARAM
TakeProfit (float) : Level Based On Previous Calculation, NEED TO INPUT PARAM
Returns: Float - The TakeProfit Value In Pips
CalculateConversionCurrency(AccountCurrency, SymbolCurrency, BaseCurrency)
Get The Conversion Currecny Between Current Account Currency & Current Pair's Quoted Currency (FOR FOREX ONLY)
Parameters:
AccountCurrency (simple string) : Is For The Account Currency Used
SymbolCurrency (simple string) : Is For The Current Symbol Currency (Front Symbol)
BaseCurrency (simple string) : Is For The Current Symbol Base Currency (Back Symbol)
Returns: Tuple Of A Bollean (Convert The Currency ?) And A String (Converted Currency)
CalculateConversionRate(ConvertCurrency, ConversionRate)
Get The Conversion Rate Between Current Account Currency & Current Pair's Quoted Currency (FOR FOREX ONLY)
Parameters:
ConvertCurrency (bool) : Is To Check If The Current Symbol Needs To Be Converted Or Not
ConversionRate (float) : Is The Quoted Price Of The Conversion Currency (Input The request.security Function Here)
Returns: Float Price Of Conversion Rate (If In The Same Currency Than Return Value Will Be 1.0)
LotSize(LotSizeSimple, Balance, Risk, SLDistance, ConversionRate)
Get Current Lot Size
Parameters:
LotSizeSimple (bool) : Is To Toggle Lot Sizing Calculation (Simple Is Good Enough For Stocks & Crypto, Whilst Complex Is For Forex)
Balance (float) : Is For The Current Account Balance To Calculate The Lot Sizing Based Off
Risk (float) : Is For The Current Risk Per Trade To Calculate The Lot Sizing Based Off
SLDistance (float) : Is The Current Position StopLoss Distance From Its Entry Price
ConversionRate (float) : Is The Currency Conversion Rate (Used For Complex Lot Sizing Only)
Returns: Float - Position Size In Units
ToLots(Units)
Converts Units To Lots
Parameters:
Units (float) : Is For How Many Units Need To Be Converted Into Lots (Minimun 1000 Units)
Returns: Float - Position Size In Lots
ToUnits(Lots)
Converts Lots To Units
Parameters:
Lots (float) : Is For How Many Lots Need To Be Converted Into Units (Minimun 0.01 Units)
Returns: Int - Position Size In Units
ToLotsInUnits(Units)
Converts Units To Lots Than Back To Units
Parameters:
Units (float) : Is For How Many Units Need To Be Converted Into Lots (Minimun 1000 Units)
Returns: Float - Position Size In Lots That Were Rounded To Units
ATRTrail(OrderType, SourceType, ATRPeriod, ATRMultiplyer, SwingLookback)
Calculate ATR Trailing Stop
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
SourceType (int) : Is To Determine Where To Calculate The ATR Trailing From, Defval = close
ATRPeriod (simple int) : Is To Change Its ATR Period, Defval = 20
ATRMultiplyer (float) : Is To Change Its ATR Trailing Distance, Defval = 1
SwingLookback (int) : Is To Change Its Swing HiLo Lookback (Only From Source Type 5), Defval = 7
Returns: Float - Number Of The Current ATR Trailing
DangerZone(WinRate, AvgRRR, Filter)
Calculate Danger Zone Of A Given Strategy
Parameters:
WinRate (float) : Is The Strategy WinRate
AvgRRR (float) : Is The Strategy Avg RRR
Filter (float) : Is The Minimum Profit It Needs To Be Out Of BE Zone, Defval = 3
Returns: Int - Value, 1 If Out Of Danger Zone, 0 If BE, -1 If In Danger Zone
IsQuestionableTrades(TradeTP, TradeSL)
Checks For Questionable Trades (Which Are Trades That Its TP & SL Level Got Hit At The Same Candle)
Parameters:
TradeTP (float) : Is The Trade In Question Take Profit Level
TradeSL (float) : Is The Trade In Question Stop Loss Level
Returns: Bool - True If The Last Trade Was A "Questionable Trade"
//====================================================================================================================================================
// Custom Strategy Functions
//====================================================================================================================================================
OpenLong(EntryID, LotSize, LimitPrice, StopPrice, Comment, CommentValue)
Open A Long Order Based On The Given Params
Parameters:
EntryID (string) : Is The Trade Entry ID, Defval = "Long"
LotSize (float) : Is The Lot Size Of The Trade, Defval = 1
LimitPrice (float) : Is The Limit Order Price To Set The Order At, Defval = Na / Market Order Execution
StopPrice (float) : Is The Stop Order Price To Set The Order At, Defval = Na / Market Order Execution
Comment (string) : Is The Order Comment, Defval = Long Entry Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Returns: Void
OpenShort(EntryID, LotSize, LimitPrice, StopPrice, Comment, CommentValue)
Open A Short Order Based On The Given Params
Parameters:
EntryID (string) : Is The Trade Entry ID, Defval = "Short"
LotSize (float) : Is The Lot Size Of The Trade, Defval = 1
LimitPrice (float) : Is The Limit Order Price To Set The Order At, Defval = Na / Market Order Execution
StopPrice (float) : Is The Stop Order Price To Set The Order At, Defval = Na / Market Order Execution
Comment (string) : Is The Order Comment, Defval = Short Entry Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Returns: Void
TP_SLExit(FromID, TPLevel, SLLevel, PercentageClose, Comment, CommentValue)
Exits Based On Predetermined TP & SL Levels
Parameters:
FromID (string) : Is The Trade ID That The TP & SL Levels Be Palced
TPLevel (float) : Is The Take Profit Level
SLLevel (float) : Is The StopLoss Level
PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
Comment (string) : Is The Order Comment, Defval = Exit Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Returns: Void
CloseLong(ExitID, PercentageClose, Comment, CommentValue, Instant)
Exits A Long Order Based On A Specified Condition
Parameters:
ExitID (string) : Is The Trade ID That Will Be Closed, Defval = "Long"
PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
Comment (string) : Is The Order Comment, Defval = Exit Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Instant (bool) : Is For Exit Execution Type, Defval = false
Returns: Void
CloseShort(ExitID, PercentageClose, Comment, CommentValue, Instant)
Exits A Short Order Based On A Specified Condition
Parameters:
ExitID (string) : Is The Trade ID That Will Be Closed, Defval = "Short"
PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
Comment (string) : Is The Order Comment, Defval = Exit Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Instant (bool) : Is For Exit Execution Type, Defval = false
Returns: Void
BrokerCheck(Broker)
Checks Traded Broker With Current Loaded Chart Broker
Parameters:
Broker (string) : Is The Current Broker That Is Traded
Returns: Bool - True If Current Traded Broker Is Same As Loaded Chart Broker
OpenPC(LicenseID, OrderType, UseLimit, LimitPrice, SymbolPrefix, Symbol, SymbolSuffix, Risk, SL, TP, OrderComment, Spread)
Compiles Given Parameters Into An Alert String Format To Open Trades Using Pine Connector
Parameters:
LicenseID (string) : Is The Users PineConnector LicenseID
OrderType (int) : Is The Desired OrderType To Open
UseLimit (bool) : Is If We Want To Enter The Position At Exactly The Previous Closing Price
LimitPrice (float) : Is The Limit Price Of The Trade (Only For Pending Orders)
SymbolPrefix (string) : Is The Current Symbol Prefix (If Any)
Symbol (string) : Is The Traded Symbol
SymbolSuffix (string) : Is The Current Symbol Suffix (If Any)
Risk (float) : Is The Trade Risk Per Trade / Fixed Lot Sizing
SL (float) : Is The Trade SL In Price / In Pips
TP (float) : Is The Trade TP In Price / In Pips
OrderComment (string) : Is The Executed Trade Comment
Spread (float) : is The Maximum Spread For Execution
Returns: String - Pine Connector Order Syntax Alert Message
ClosePC(LicenseID, OrderType, SymbolPrefix, Symbol, SymbolSuffix)
Compiles Given Parameters Into An Alert String Format To Close Trades Using Pine Connector
Parameters:
LicenseID (string) : Is The Users PineConnector LicenseID
OrderType (int) : Is The Desired OrderType To Close
SymbolPrefix (string) : Is The Current Symbol Prefix (If Any)
Symbol (string) : Is The Traded Symbol
SymbolSuffix (string) : Is The Current Symbol Suffix (If Any)
Returns: String - Pine Connector Order Syntax Alert Message
//====================================================================================================================================================
// Custom Backtesting Calculation Functions
//====================================================================================================================================================
CalculatePNL(EntryPrice, ExitPrice, LotSize, ConversionRate)
Calculates Trade PNL Based On Entry, Eixt & Lot Size
Parameters:
EntryPrice (float) : Is The Trade Entry
ExitPrice (float) : Is The Trade Exit
LotSize (float) : Is The Trade Sizing
ConversionRate (float) : Is The Currency Conversion Rate (Used For Complex Lot Sizing Only)
Returns: Float - The Current Trade PNL
UpdateBalance(PrevBalance, PNL)
Updates The Previous Ginve Balance To The Next PNL
Parameters:
PrevBalance (float) : Is The Previous Balance To Be Updated
PNL (float) : Is The Current Trade PNL To Be Added
Returns: Float - The Current Updated PNL
CalculateSlpComm(PNL, MaxRate)
Calculates Random Slippage & Commisions Fees Based On The Parameters
Parameters:
PNL (float) : Is The Current Trade PNL
MaxRate (float) : Is The Upper Limit (In Percentage) Of The Randomized Fee
Returns: Float - A Percentage Fee Of The Current Trade PNL
UpdateDD(MaxBalance, Balance)
Calculates & Updates The DD Based On Its Given Parameters
Parameters:
MaxBalance (float) : Is The Maximum Balance Ever Recorded
Balance (float) : Is The Current Account Balance
Returns: Float - The Current Strategy DD
CalculateWR(TotalTrades, LongID, ShortID)
Calculate The Total, Long & Short Trades Win Rate
Parameters:
TotalTrades (int) : Are The Current Total Trades That The Strategy Has Taken
LongID (string) : Is The Order ID Of The Long Trades Of The Strategy
ShortID (string) : Is The Order ID Of The Short Trades Of The Strategy
Returns: Tuple Of Long WR%, Short WR%, Total WR%, Total Winning Trades, Total Losing Trades, Total Long Trades & Total Short Trades
CalculateAvgRRR(WinTrades, LossTrades)
Calculates The Overall Strategy Avg Risk Reward Ratio
Parameters:
WinTrades (int) : Are The Strategy Winning Trades
LossTrades (int) : Are The Strategy Losing Trades
Returns: Float - The Average RRR Values
CAGR(StartTime, StartPrice, EndTime, EndPrice)
Calculates The CAGR Over The Given Time Period © TradingView
Parameters:
StartTime (int) : Is The Starting Time Of The Calculation
StartPrice (float) : Is The Starting Price Of The Calculation
EndTime (int) : Is The Ending Time Of The Calculation
EndPrice (float) : Is The Ending Price Of The Calculation
Returns: Float - The CAGR Values
//====================================================================================================================================================
// Custom Plot Functions
//====================================================================================================================================================
EditLabels(LabelID, X1, Y1, Text, Color, TextColor, EditCondition, DeleteCondition)
Edit / Delete Labels
Parameters:
LabelID (label) : Is The ID Of The Selected Label
X1 (int) : Is The X1 Coordinate IN BARINDEX Xloc
Y1 (float) : Is The Y1 Coordinate IN PRICE Yloc
Text (string) : Is The Text Than Wants To Be Written In The Label
Color (color) : Is The Color Value Change Of The Label Text
TextColor (color)
EditCondition (int) : Is The Edit Condition of The Line (Setting Location / Color)
DeleteCondition (bool) : Is The Delete Condition Of The Line If Ture Deletes The Prev Itteration Of The Line
Returns: Void
EditLine(LineID, X1, Y1, X2, Y2, Color, EditCondition, DeleteCondition)
Edit / Delete Lines
Parameters:
LineID (line) : Is The ID Of The Selected Line
X1 (int) : Is The X1 Coordinate IN BARINDEX Xloc
Y1 (float) : Is The Y1 Coordinate IN PRICE Yloc
X2 (int) : Is The X2 Coordinate IN BARINDEX Xloc
Y2 (float) : Is The Y2 Coordinate IN PRICE Yloc
Color (color) : Is The Color Value Change Of The Line
EditCondition (int) : Is The Edit Condition of The Line (Setting Location / Color)
DeleteCondition (bool) : Is The Delete Condition Of The Line If Ture Deletes The Prev Itteration Of The Line
Returns: Void
//====================================================================================================================================================
// Custom Display Functions (Using Tables)
//====================================================================================================================================================
FillTable(TableID, Column, Row, Title, Value, BgColor, TextColor, ToolTip)
Filling The Selected Table With The Inputed Information
Parameters:
TableID (table) : Is The Table ID That Wants To Be Edited
Column (int) : Is The Current Column Of The Table That Wants To Be Edited
Row (int) : Is The Current Row Of The Table That Wants To Be Edited
Title (string) : Is The String Title Of The Current Cell Table
Value (string) : Is The String Value Of The Current Cell Table
BgColor (color) : Is The Selected Color For The Current Table
TextColor (color) : Is The Selected Color For The Current Table
ToolTip (string) : Is The ToolTip Of The Current Cell In The Table
Returns: Void
DisplayBTResults(TableID, BgColor, TextColor, StartingBalance, Balance, DollarReturn, TotalPips, MaxDD)
Filling The Selected Table With The Inputed Information
Parameters:
TableID (table) : Is The Table ID That Wants To Be Edited
BgColor (color) : Is The Selected Color For The Current Table
TextColor (color) : Is The Selected Color For The Current Table
StartingBalance (float) : Is The Account Starting Balance
Balance (float)
DollarReturn (float) : Is The Account Dollar Reture
TotalPips (float) : Is The Total Pips Gained / loss
MaxDD (float) : Is The Maximum Drawdown Over The Backtesting Period
Returns: Void
DisplayBTResultsV2(TableID, BgColor, TextColor, TotalWR, QTCount, LongWR, ShortWR, InitialCapital, CumProfit, CumFee, AvgRRR, MaxDD, CAGR, MeanDD)
Filling The Selected Table With The Inputed Information
Parameters:
TableID (table) : Is The Table ID That Wants To Be Edited
BgColor (color) : Is The Selected Color For The Current Table
TextColor (color) : Is The Selected Color For The Current Table
TotalWR (float) : Is The Strategy Total WR In %
QTCount (int) : Is The Strategy Questionable Trades Count
LongWR (float) : Is The Strategy Total WR In %
ShortWR (float) : Is The Strategy Total WR In %
InitialCapital (float) : Is The Strategy Initial Starting Capital
CumProfit (float) : Is The Strategy Ending Cumulative Profit
CumFee (float) : Is The Strategy Ending Cumulative Fee (Based On Randomized Fee Assumptions)
AvgRRR (float) : Is The Strategy Average Risk Reward Ratio
MaxDD (float) : Is The Strategy Maximum DrawDown In Its Backtesting Period
CAGR (float) : Is The Strategy Compounded Average GRowth In %
MeanDD (float) : Is The Strategy Mean / Average Drawdown In The Backtesting Period
Returns: Void
//====================================================================================================================================================
// Custom Pattern Detection Functions
//====================================================================================================================================================
BullFib(priceLow, priceHigh, fibRatio)
Calculates A Bullish Fibonacci Value (From Swing Low To High) © ZenAndTheArtOfTrading
Parameters:
priceLow (float)
priceHigh (float)
fibRatio (float)
Returns: The Fibonacci Value Of The Given Ratio Between The Two Price Points
BearFib(priceLow, priceHigh, fibRatio)
Calculates A Bearish Fibonacci Value (From Swing High To Low) © ZenAndTheArtOfTrading
Parameters:
priceLow (float)
priceHigh (float)
fibRatio (float)
Returns: The Fibonacci Value Of The Given Ratio Between The Two Price Points
GetBodySize()
Gets The Current Candle Body Size IN POINTS © ZenAndTheArtOfTrading
Returns: The Current Candle Body Size IN POINTS
GetTopWickSize()
Gets The Current Candle Top Wick Size IN POINTS © ZenAndTheArtOfTrading
Returns: The Current Candle Top Wick Size IN POINTS
GetBottomWickSize()
Gets The Current Candle Bottom Wick Size IN POINTS © ZenAndTheArtOfTrading
Returns: The Current Candle Bottom Wick Size IN POINTS
GetBodyPercent()
Gets The Current Candle Body Size As A Percentage Of Its Entire Size Including Its Wicks © ZenAndTheArtOfTrading
Returns: The Current Candle Body Size IN PERCENTAGE
GetTopWickPercent()
Gets The Current Top Wick Size As A Percentage Of Its Entire Body Size
Returns: Float - The Current Candle Top Wick Size IN PERCENTAGE
GetBottomWickPercent()
Gets The Current Bottom Wick Size As A Percentage Of Its Entire Bodu Size
Returns: Float - The Current Candle Bottom Size IN PERCENTAGE
BullishEC(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bullish Engulfing Candle
Parameters:
Allowance (int) : To Give Flexibility Of Engulfing Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bullsih Engulfing Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bullish Engulfing Candle
BearishEC(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bearish Engulfing Candle
Parameters:
Allowance (int) : To Give Flexibility Of Engulfing Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bearish Engulfing Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing High, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bearish Engulfing Candle
Hammer(Fib, ColorMatch, NearSwings, SwingLookBack, ATRFilterCheck, ATRPeriod)
Checks If The Current Bar Is A Hammer Candle
Parameters:
Fib (float) : To Specify Which Fibonacci Ratio To Use When Determining The Hammer Candle, Defval = 0.382 Ratio
ColorMatch (bool) : To Filter Only Bullish Closed Hammer Candle Pattern, Defval = false
NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
ATRFilterCheck (float) : To Filter Smaller Hammer Candles That Might Be Better Classified As A Doji Candle, Defval = 1
ATRPeriod (simple int) : To Change ATR Period Of The ATR Filter, Defval = 20
Returns: Bool - True If The Current Bar Matches The Requirements of a Hammer Candle
Star(Fib, ColorMatch, NearSwings, SwingLookBack, ATRFilterCheck, ATRPeriod)
Checks If The Current Bar Is A Hammer Candle
Parameters:
Fib (float) : To Specify Which Fibonacci Ratio To Use When Determining The Hammer Candle, Defval = 0.382 Ratio
ColorMatch (bool) : To Filter Only Bullish Closed Hammer Candle Pattern, Defval = false
NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
ATRFilterCheck (float) : To Filter Smaller Hammer Candles That Might Be Better Classified As A Doji Candle, Defval = 1
ATRPeriod (simple int) : To Change ATR Period Of The ATR Filter, Defval = 20
Returns: Bool - True If The Current Bar Matches The Requirements of a Hammer Candle
Doji(MaxWickSize, MaxBodySize, DojiType, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Doji Candle
Parameters:
MaxWickSize (float) : To Specify The Maximum Lenght Of Its Upper & Lower Wick, Defval = 2
MaxBodySize (float) : To Specify The Maximum Lenght Of Its Candle Body IN PERCENT, Defval = 0.05
DojiType (int)
NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing High / Low (Only In Dragonlyf / Gravestone Mode), Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High / Low (Only In Dragonlyf / Gravestone Mode), Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Doji Candle
BullishIB(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bullish Harami Candle
Parameters:
Allowance (int) : To Give Flexibility Of Harami Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bullsih Harami Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bullish Harami Candle
BearishIB(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bullish Harami Candle
Parameters:
Allowance (int) : To Give Flexibility Of Harami Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bearish Harami Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing High, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bearish Harami Candle
//====================================================================================================================================================
// Custom Time Functions
//====================================================================================================================================================
BarInSession(sess, useFilter)
Determines if the current price bar falls inside the specified session © ZenAndTheArtOfTrading
Parameters:
sess (simple string)
useFilter (bool)
Returns: A boolean - true if the current bar falls within the given time session
BarOutSession(sess, useFilter)
Determines if the current price bar falls outside the specified session © ZenAndTheArtOfTrading
Parameters:
sess (simple string)
useFilter (bool)
Returns: A boolean - true if the current bar falls outside the given time session
DateFilter(startTime, endTime)
Determines if this bar's time falls within date filter range © ZenAndTheArtOfTrading
Parameters:
startTime (int)
endTime (int)
Returns: A boolean - true if the current bar falls within the given dates
DayFilter(monday, tuesday, wednesday, thursday, friday, saturday, sunday)
Checks if the current bar's day is in the list of given days to analyze © ZenAndTheArtOfTrading
Parameters:
monday (bool)
tuesday (bool)
wednesday (bool)
thursday (bool)
friday (bool)
saturday (bool)
sunday (bool)
Returns: A boolean - true if the current bar's day is one of the given days
AUSSess()
Checks If The Current Australian Forex Session In Running
Returns: Bool - True If Currently The Australian Session Is Running
ASIASess()
Checks If The Current Asian Forex Session In Running
Returns: Bool - True If Currently The Asian Session Is Running
EURSess()
Checks If The Current European Forex Session In Running
Returns: Bool - True If Currently The European Session Is Running
USSess()
Checks If The Current US Forex Session In Running
Returns: Bool - True If Currently The US Session Is Running
UNIXToDate(Time, ConversionType, TimeZone)
Converts UNIX Time To Datetime
Parameters:
Time (int) : Is The UNIX Time Input
ConversionType (int) : Is The Datetime Output Format, Defval = DD-MM-YYYY
TimeZone (string) : Is To Convert The Outputed Datetime Into The Specified Time Zone, Defval = Exchange Time Zone
Returns: String - String Of Datetime
Strategy Myth-Busting #13 - MultiEMA+BXTrender - [SP/MYN]#13 on the Myth-Busting bench, we are automating the "I Found The Highest Win Rate 15 Minute Scalping Trading Strategy Ever" strategy from "TradeIQ" who claims to have backtested this manually and achieved 410% profit over 100 trades within 6 months on Natural Gas with 79 Wins / 21 Losses with an astounding 3.96% Max Drawdown.
It was quite challenging emulating the same subjective EMA pullback logic along with the dependent sequencing of events necessary to enter a trade and we might improve on this to make it better in the future. Super kudos to @spdoinkal who helped with this strategy. If you have ideas on how this could be improved on, would love to hear about them.
As is, we were unable to substantiate similar results to what was manually backtested by TradeIQ, we do however see potential here. Given some optimizations and improvements to the the entry logic accommodating for a wider more variable margin after pullbacks reestablish above/below the fast EMA we think the performance of this strategy could certainly be improved upon. So not sure if we have totally myth busted this completely at this point in time.
This strategy uses a combination of 2 open-source public indicators:
3 EMA's (Trading View Internal)
B-Xtrender by Puppytherapy
Three separate (21), (89) and (200) EMA's are used as a means to confirm and keep entry out of ranged markets. When the 3 EMA's are all clumped up together with no distance it's indicative of a flat or ranged market. This is then used in conjunction with B-XTrender as a means to detect the trend direction. B-XTrender which is a trend following indicator originally published in the IFTA Journal by Bharat Jhunjhunwala. It uses both a short and long term lengths along with a compound EMA used as a means to smooth and sample trend direction.
Trading Rules
15 min candles but other lower time-frames
Stop Loss on previous swing high/low
No Take Profit, Exit on new red/green circles from BX-Trender
Long
EMA Green (21) on top, White (89)in middle and red (200) on bottom and there is distance between EMA's need to be spaced, otherwise in a ranged market
Price action must pull back into 89 EMA (White line) either close or touching it.
Once pullback occurs wait for BX Trender to issue a new green circle and BX Trend line must be green and above 0
Price action must also pull up back above the (Green Line) EMA 21
Short
EMA Red (200) on top, White (89) in middle and Green (21) on bottom and there is distance between EMA's need to be spaced, otherwise in a ranged market
Price action must pull back into 89 EMA (White line) either close or touching it.
Once pullback occurs wait for BX Trender to issue a new red circle and BX Trend line must be red and below 0
Price action must also pull up back below the (green Line) EMA 21
If you know of or have a strategy you want to see myth-busted or just have an idea for one, please feel free to message me.
Strategy Myth-Busting #11 - TrendMagic+SqzMom+CDV - [MYN]This is part of a new series we are calling "Strategy Myth-Busting" where we take open public manual trading strategies and automate them. The goal is to not only validate the authenticity of the claims but to provide an automated version for traders who wish to trade autonomously.
Our 11th one is an automated version of the "Magic Trading Strategy : Most Profitable Indicator : 1 Minute Scalping Strategy Crypto" strategy from "Fx MENTOR US" who doesn't make any official claims but given the indicators he was using, it looked like on the surface that this might actually work. The strategy author uses this on the 1 minute and 3 minute timeframes on mostly FOREX and Heiken Ashi candles but as the title of his strategy indicates is designed for Crypto. So who knows..
To backtest this accurately and get a better picture we resolved the Heiken Ashi bars to standard candlesticks . Even so, I was unable to sustain any consistency in my results on either the 1 or 3 min time frames and both FOREX and Crypto. 10000% Busted.
This strategy uses a combination of 3 open-source public indicators:
Trend Magic by KivancOzbilgic
Squeeze Momentum by LazyBear
Cumulative Delta Volume by LonesomeTheBlue
Trend Magic consists of two main indicators to validate momentum and volatility. It uses an ATR like a trailing Stop to determine the overarching momentum and CCI as a means to validate volatility. Together these are used as the primary indicator in this strategy. When the CCI is above 0 this is confirmation of a volatility event is occurring with affirmation based upon current momentum (ATR).
The CCI volatility indicator gets confirmation by the the Cumulative Delta Volume indicator which calculates the difference between buying and selling pressure. Volume Delta is calculated by taking the difference of the volume that traded at the offer price and the volume that traded at the bid price. The more volume that is traded at the bid price, the more likely there is momentum in the market.
And lastly the Squeeze Momentum indicator which uses a combination of Bollinger Bands, Keltner Channels and Momentum are used to again confirm momentum and volatility. During periods of low volatility, Bollinger bands narrow and trade inside Keltner channels. They can only contract so much before it can’t contain the energy it’s been building. When the Bollinger bands come back out, it explodes higher. When we see the histogram bar exploding into green above 0 that is a clear confirmation of increased momentum and volatile. The opposite (red) below 0 is true when there are low periods. This indicator is used as a means to really determine when there is premium selling plays going on leading to big directional movements again confirming the positive or negative momentum and volatility direction.
If you know of or have a strategy you want to see myth-busted or just have an idea for one, please feel free to message me.
Trading Rules
1 - 3 min candles
FOREX or Crypto
Stop loss at swing high/low | 1.5 risk/ratio
Long Condition
Trend Magic line is Blue ( CCI is above 0) and above the current close on the bar
Squeeze Momentum's histogram bar is green/lime
Cumulative Delta Volume line is green
Short Condition
Trend Magic line is Red ( CCI is below 0) and below the current close on the bar
Squeeze Momentum's histogram bar is red/maroon
Cumulative Delta Volume line is peach
Strategy Myth-Busting #20 - HalfTrend+HullButterfly - [MYN]#20 on the Myth-Busting bench, we are automating the " I Found Super Easy 1 Minute Scalping System And Backtest It 100 Times " strategy from " Jessy Trading " who claims 30.58% net profit over 100 trades in a couple of weeks with a 51% win rate and profit factor of 1.56 on EURUSD .
This one surprised us quite a bit. Despite the title of this strategy indicating this is on the 1 min timeframe, the author demonstrates the backtesting manually on the 5 minute timeframe. Given the simplicity of this strategy only incorporating a couple of indicators, it's robustness being able to be profitable in both low and high timeframes and on multiple symbols was quite refreshing.
The 3 settings which we need to pay most attention to here is the Hull Butterfly length, HalfTrend amplitude and the Max Number Of Bars Between Hull and HalfTrend Trigger. Depending on the timeframe and symbol, these settings greatly impact the performance outcomes of the strategy. I've listed a couple of these below.
And as always, If you know of or have a strategy you want to see myth-busted or just have an idea for one, please feel free to message me.
This strategy uses a combination of 3 open-source public indicators:
Hull Butterfly Oscillator by LuxAlgo
HalfTrend by Everget
Trading Rules
5 min candles but higher / lower candles work too.
Stop loss at swing high/low
Take Profit 1.5x the risk
Long
Hull Butterfly gives us green column, Wait for HalfTrend to present an up arrow and enter trade.
Short
Hull Butterfly gives us a red column , Wait for HalfTrend to present a down arrow and enter trade.
Alternative Trading Settings for different time frames
1 Minute Timeframe
Move the Hull Butterfly length from the default 11 to 9
Move the HalfTrend Amplitude from the default 2 to 1
Enabling ADX Filter with a 25 threshold
2 Hour Timeframe
Move the HalfTrend Amplitude from the default 2 to 1
Laddered Take Profits from 14.5% to 19% with an 8% SL
The Only EURUSD Trading Strategy You Need - KaspricciThe Only EURUSD Trading Strategy You Need
I got the idea to this strategy from a youtube video uploaded by Trade Beta. It is designed to capture the early market move of major forex pair EURUSD at beginning of New York Stock Exchange (13:30 GMT). Trade Beta tested his strategy on the 5 minute chart. I have set all parameters to same values as shown in the video.
The strategy creates two pending orders at the recent swing high and low. Once the first pending order entered, the remaining one is cancelled. Latest at the end of market session all pending orders are cancelled and all open trade are closed as well.
In rare case that price at session opening is above swing high, only a pending sell stop order is created at swing high price. And in case price is below swing low, a pending buy stop order is created.
Settings
Trading Time - default: New York Stock Exchange opening hours. Pending orders are created at the close of the first candle within the session.
Swing High Source / Bars - default: High / 5 bars. Used to find the latest swing high within a range of 5 bars left and right. Price is used for buy stop order.
Swing Low Source / Bars - default: Low / 5 bars. Used to find the latest swing low within a range of 5 bars left and right. Price is used for sell stop order.
Stop Loss Type - default: ATR. You can switch between stop loss calculation based on Average True Range value or fixed value.
ATR Length / Factor / TP Ratio - default: 14 / 2.0 / 2.0. Used to calculate the Stop Loss as ATR * Factor and Take Profit as Stop Loss * TP Ratio.
FIX Stop Loss / Take Profit - default: 10 pips / 20 pips. In case you select Stop Loss Type = FIX, these value swill be used.
This strategy is for educational purposes only! It is not meant to be a financial advice.






















